package edu.asselvi.seguros.dao;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;

import edu.asselvi.seguros.db.DbUtils;
import edu.asselvi.seguros.exception.ESegurosErros;
import edu.asselvi.seguros.exception.SegurosException;
import edu.asselvi.seguros.pojo.TipoItem;



public class TipoItemDao extends DbUtils {

	Connection conn;

	public TipoItemDao(Connection conn) {
		this.conn = conn; 
	}

	public TipoItem insert(TipoItem tipoItem) throws SegurosException{

		String sql = "INSERT INTO TIPOITENS (ID_TIPO_ITEM,DISCRIMINACAO) VALUES (?, ?)";
		PreparedStatement p = null;

		try {
			tipoItem.setId_tipo_item(getNextId("SEQ_TIPOITENS", conn)); 
			
			p = conn.prepareStatement(sql);
			int cont = 1;
			p.setInt(cont++, tipoItem.getId_tipo_item());
			p.setString(cont++, tipoItem.getDiscriminacao());

			p.executeUpdate();

		} catch (SQLException e) {
			throw new SegurosException(ESegurosErros.ERRO_INSERCAO);
			
		} finally {
			close(p);
		}
		return tipoItem;
	}

	public List<TipoItem> list() throws SQLException, SegurosException {

		String sql = "SELECT * FROM TIPOITENS";

		List<TipoItem> lista = null;
		java.sql.ResultSet rs = null;
		PreparedStatement p = null;
		
		try {
			lista = new ArrayList<TipoItem>();
			p = conn.prepareStatement(sql);
			rs = p.executeQuery();
			
			while (rs.next()) {

				TipoItem tipoItem= new TipoItem();

				tipoItem.setId_tipo_item(rs.getInt("ID_TIPO_ITEM"));
				tipoItem.setDiscriminacao(rs.getString("DISCRIMINACAO"));
				
				lista.add(tipoItem);
			}
			
			if (lista.isEmpty()){
				throw new SegurosException(ESegurosErros.ERRO_ZERO_REGISTROS);
			} 
			
			
		} finally {
			close(p);
			close(rs);
		}

		return lista;

	
	}
	
}
